
package pe.com.fastfood4.rie.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import pe.com.fastfood4.rie.model.Reserva;
import pe.com.fastfood4.rie.service.ReservaService;

/**
 * ActualizarReservaController.java
 * es llamado desde actualizarReservaForm.jsp, actualizan estado de reserva (a Confirmada, Rechazada o Facturada)
 * y pasan el resultado a confirmarReservaResultado.jsp
 * @author grupo 06 - upc_dew 2010
 * @since 1.0
 * @see ifernandez.aq@gmail.com
 */
public class ActualizarReservaController implements Controller{

    private ReservaService reservaService;

    public void setReservaService(ReservaService reservaService) {
        this.reservaService = reservaService;
    }

    protected final Log logger = LogFactory.getLog(getClass());

    public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse res) throws Exception {
        String idReserva = req.getParameter("idReserva");
        String fechaParameter = req.getParameter("fecha");
        String valorConfirmar = req.getParameter("confirmar");
        String valorRechazar = req.getParameter("rechazar");
        String valorFacturar = req.getParameter("facturar");
        String estado = null;

        String fechaSubString = fechaParameter.substring(0, 10);

        logger.info("idReserva = " + idReserva + 
                ", fechaParameter: " + fechaParameter +
                ", fechaSubString: " + fechaSubString +
                ", valorConfirmar=" + valorConfirmar +
                ", valorRechazar=" + valorRechazar +
                ", valorFacturar=" + valorFacturar);

        if (valorConfirmar != null){
            estado = "Confirmada";
            reservaService.actualizarReserva(idReserva, estado);
        } else if (valorRechazar != null) {
            estado = "Rechazada";
            reservaService.actualizarReserva(idReserva, estado);
        } else if (valorFacturar != null) {
            estado = "Facturada";
            reservaService.actualizarReserva(idReserva, estado);
        }

        DateTime fechaActual = new DateTime(fechaSubString);
        DateTimeFormatter formatoLongDate = DateTimeFormat.longDate();
        String fechaActualFormatLongDate1 = formatoLongDate.withLocale(Locale.getDefault()).print(fechaActual);

        List<Reserva> reservas = reservaService.getReservasPorFecha(fechaSubString);

        Map<String, Object> myModel = new HashMap<String, Object>();
        myModel.put("fechaActualFormatLongDate1", fechaActualFormatLongDate1);
        myModel.put("reservas", reservas);

        return new ModelAndView("confirmarReservaResultado", "model", myModel);
    }

}
